#ifndef INCLUDES_H_INCLUDED
#define INCLUDES_H_INCLUDED

/**
 *
 * \file includes.h
 * \brief This file contains all necessary includes.
 * \author Vladimir Klubkov (aka marked)
 *
 * Last changes date:
 * \date 14.03.2011
 *
 * Copyright 2011 Vladimir Klubkov <marked-one@yandex.ru>
 *
 * This file is part of OOXlib.
 *
 * OOXLib is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * OOXlib is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with OOXlib; if not, you can try to find  it here:
 * http://www.gnu.org/licenses/gpl.txt
 * or write to the Free Software Foundation, Inc., 59 Temple Place,
 * Suite 330, Boston, MA  02111-1307  USA
 *
 */

// Sandard C library.
#include <stdlib.h> // For ::getenv().
//Standard C++ library (STL).
#include <iostream>
#include <sstream>
#include <vector>
// X11 library. We also need to link with the libX11.a, for all ::X... functons.
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/cursorfont.h>
// Xpm library. We also neeed to link with libXpm.a, for ::XpmReadFileToPixmap().
#include <X11/xpm.h>
// Undefine some standard xlib macros, cause of using the same names for some classes members.
// If you need this for some reasons, use the X-prepended function names instead!
#ifdef ProtocolVersion
#undef ProtocolVersion
#endif
#ifdef ProtocolRevision
#undef ProtocolRevision
#endif
#ifdef ConnectionNumber
#undef ConnectionNumber
#endif

/**
 * \def UNUSED_PARAM
 * Using UNUSED_PARAM for parameter of a function disables the "unused parameter" warning.
 * \example void CWindow::OnMouseEnter(const int iX UNUSED_PARAM, const int iY UNUSED_PARAM) {}
 */
#define UNUSED_PARAM __attribute__((unused))
/**
 * \namespace OOXlib
 * All the files in the OOXlib library declare all of its entities within this namespace.
 */
namespace OOXlib {}

/**
 * \mainpage OOXlib
 * This is a C++ library for creating GUI windows.
 * Actually, this library was created only to show messageboxes on linux systems,
 * but it can be improved and used for other purposes.
 *
 * OOXlib's idea is taken from the xlib++ library by Rob Tougher <robt@robtougher.com>
 * You can find it here: http://linuxgazette.net/issue78/tougher.html
 * Rob Tougher's library is redistributed under the terms of GNU GPL 2 license and
 * may be redistributed under the terms of any later version, so  OOXlib's license is the GNU GPL 3.
 * The actual version of the GNU GPL you can find here: http://www.gnu.org/licenses/gpl.txt
 *
 * OOXlib uses functions from X11 and Xpm libraries, and, if you use OOXlib as a
 * static library or as a source code, you need to link your project with these libraries.
 * Documentation to the xlib library you can find here: http://tronche.com/gui/x/xlib/
 * Documentation to the Xpm library you can download here: http://www.kerguelen.org/x/docs/xpm.ps.gz
 *
 */

#endif // INCLUDES_H_INCLUDED
